﻿/*
 * Script: "validaciones_helper.js"
 * Copyright 2011 SISVOX.
 *
 * Licenciado bajo SISVOX, Version 1.0 (la "Licencia");
 * El codigo presente que compone este Software es propiedad unica y
 * exclusivamente de SISVOX, por lo tanto, usted no podrá utilizar este
 * archivo excepto en cumplimiento de la Licencia ofrecida por SISVOX.
 * Usted puede obtener una copia de la Licencia en:
 *
 *      Soluciones Integrales de Software Vox (SISVOX)
 *                 http://www.sisvox.com
 *
 *     - Carlos Calvo      <ccalvo@sisvox.com>
 *     - Andres Hernandez  <ahernandez@sisvox.com>
 *
 * A menos que sea requerido por la ley aplicable o se acuerde por escrito,
 * el software distribuido bajo la licencia se distribuye "TAL CUAL", CON
 * LAS GARANTIAS Y CONDICIONES expresadas en la "Licencia".
 */
 

// =================================================================================================================
// ========================= Convertir Eventos de Auditoria para Manual de Usuario =================================
// =================================================================================================================

function convertir( cadena ) {									
	especiales 	= new Array('Á','É','Í','Ó','Ú','Ñ');
 	normales 	= new Array('A','E','I','O','U','N');

 	i = 0;
	while ( i < especiales.length ) {  
  		cadena = cadena.split(especiales[i]).join(normales[i]);
  		i++;
 	}
	document.write( cadena );
}


// =================================================================================================================
// ============================================ Verificar si es un numero ==========================================
// =================================================================================================================

function validarEntero(valor){
    valor = parseInt(valor);

    if (isNaN(valor)) {
        return "";
    } else {
        return valor;
    }
}


// =================================================================================================================
// ============================================ Verificar si es un numero ==========================================
// =================================================================================================================

function IsNumeric(strString) {
    var strValidChars = "0123456789";
    var strChar;
    var blnResult = true;

    if (strString.length == 0) return false;

    //  test strString consists of valid characters listed above
    for (i = 0; i < strString.length && blnResult == true; i++) {
        strChar = strString.charAt(i);
        if (strValidChars.indexOf(strChar) == -1) {
            blnResult = false;
        }
    }
    return blnResult;
}


// =================================================================================================================
// ============================================ Verificar si es un Float ===========================================
// =================================================================================================================

function IsFloat(strString) {
    var strValidChars = "0123456789,";
    var strChar;
    var blnResult = true;

    if (strString.length == 0) return false;

    //  test strString consists of valid characters listed above
    for (i = 0; i < strString.length && blnResult == true; i++) {
        strChar = strString.charAt(i);
        if (strValidChars.indexOf(strChar) == -1) {
            blnResult = false;
        }
    }
    return blnResult;
}


// =================================================================================================================
// ===================================== Setear un Número Decimal en un campo ======================================
// =================================================================================================================

function setear_nro_decimal(nro_decimal, campo) {     
	nro_decimal_preparado =  this.preparar_nro_decimal( nro_decimal );

	document.getElementById( campo ).value 	= nro_decimal_preparado;
}


// =================================================================================================================
// ====================================== Agregar ,00 y 0 al Número Decimal ========================================
// =================================================================================================================

function preparar_nro_decimal( nro_decimal ) {	
	var result = nro_decimal.lastIndexOf(",");
	
	// Si no tiene decimales	
	if ( result == "-1" ) {
		nro_decimal = nro_decimal + ",00";
	} else {	
		var decimales = nro_decimal.substring(result+1, nro_decimal.length);		
		// Si tiene un solo decimal
		if ( decimales.length == 1 ) {
			nro_decimal = nro_decimal + "0";
		}
	}	
	return nro_decimal;
}


// =================================================================================================================
// ========================================= Verificar si es un alfanumerico =======================================
// =================================================================================================================

function IsAlphaNum(str) { 
    var isValid = true;
    str += "";
    for (i = 0; i < str.length; i++) {
        //Alfanumerico debe ser entre "0"-"9", "A"-"Z", o "a"-"z"
        if (!(((str.charAt(i) >= "0") && (str.charAt(i) <= "9")) ||
            ((str.charAt(i) >= "a") && (str.charAt(i) <= "z")) ||
            ((str.charAt(i) >= "A") && (str.charAt(i) <= "Z")) ||
            ((str.charAt(i) >= "Á") && (str.charAt(i) <= "Ú")))) {
            isValid = false;
            break;
        }
    }
    return isValid;
}



// =================================================================================================================
// ================================= Elimina los espacios en blanco de una cadena ==================================
// =================================================================================================================

function trim(cadena) {
    cadena = cadena.replace(/^\s*|\s*$/g,"");	// Saca los espacios antes y despues de la cadena
    cadena = cadena.replace(/\s+/gi, ''); 		// Saca los espacios entre la cadena
    return cadena;
}


// =================================================================================================================
// ============================================= Verificar si es un texto ==========================================
// =================================================================================================================

function IsAlpha(str) {
    var isValid = true;
    str += "";
    for (i = 0; i < str.length; i++) {
        //Debe ser "A"-"Z", o "a"-"z" Acentos o ?
        if (!( ((str.charAt(i) >= "a") && (str.charAt(i) <= "z")) ||
            ((str.charAt(i) >= "A") && (str.charAt(i) <= "Z")) ||
            ((str.charAt(i) >= "Á") && (str.charAt(i) <= "Ú")))) {
            isValid = false;
            break;
        }
    }
    return isValid;
}


// =================================================================================================================
// ===================================== Verificar si es una fecha valida ==========================================
// =================================================================================================================

function esFechaValida( Fecha ) {   
	
	// Cadena Año  
	var Ano 	= new String(Fecha.substring(Fecha.lastIndexOf("/")+1,Fecha.length));  
	// Cadena Mes  
	var Mes 	= new String(Fecha.substring(Fecha.indexOf("/")+1,Fecha.lastIndexOf("/")));  
	// Cadena Día  
	var Dia 	= new String(Fecha.substring(0,Fecha.indexOf("/")));  
   
	// Valido el año  
	if ( isNaN(Ano) || Ano.length < 4 || parseFloat(Ano) < 1900 ) {  
		return false;  
	}
	
	// Valido el Mes  
	if ( isNaN(Mes) || parseFloat(Mes) < 1 || parseFloat(Mes) > 12 ) {  
		return false;  
	}  

	// Valido el Dia  
	if ( isNaN(Dia) || parseInt(Dia, 10) < 1 || parseInt(Dia, 10) > 31 ) {
		return false; 
	}  
	
	if ( Mes == 4 || Mes == 6 || Mes == 9 || Mes == 11 || Mes == 2 ) {  
		if ( Mes == 2 && Dia > 28 || Dia > 30 ) {  
			return false;  
		}  
	}    
	return true;
}


// =================================================================================================================
// ============================================= Valida los INPUT RADIO ============================================
// =================================================================================================================

function validar_radio_button( radio_name ) {
    var num = radio_name.length;
    var bool = 0;
    for ( var i = 0; i < num; i++ ) {
        alert(i);
        if( radio_name[i].checked ) {
            bool = 1;
            break;
        }
    }
    if ( bool == 0) {
        return false;
    } else {
        return true;
    }
}


// =================================================================================================================
// ============================ Valida los INPUT RADIO de forma DINAMICA ===========================================
// =================================================================================================================

function validar_radio_button_dinamico( name ) {

    var inputs = document.getElementsByTagName("input");
    var bool = 0;
    var j = 0;
    while ( j < inputs.length && bool != 1) {
        if ( (inputs[j].name) == name){
            if ( inputs[j].checked == true ) {
                bool = 1;
            }
        }
        j++;
    }
    if ( bool == 0 ) {
        return false;
    } else {
        return true;
    }
}


// =================================================================================================================
// ======================================== Colocar Campos en Mayusculas ===========================================
// =================================================================================================================

function convertir_Mayusculas(campo) {
  	campo.value = campo.value.toUpperCase();
}


// =================================================================================================================
// =========================================== Validar una direccion IP ============================================
// =================================================================================================================

function validarIP(ip) {
	var invalida = 0;
	partes = ip.split('.');
	
	if ( partes.length != 4 ) {
		invalida = 1;
	}
	
	if ( invalida == 0 ) {
		for ( i = 0; i < 4; i++ ) {
			if ( partes[i] > 255 ) {
				invalida = 1;
				return false;
			}
		}
	}
	return invalida;
}
		

// =================================================================================================================
// ================================= Validar una direccion de Correo Electronico ===================================
// =================================================================================================================

function isEmailAddress(email) {
	var filter = /^[A-Z0-9._%+-]+@(?:[A-Z0-9-]+.)+[A-Z]{2,4}$/i;
	if ( email.length == 0 ) {
		return false;
	} else if ( filter.test(email) ) {
		return true;
	} else {
		return false;
	}
}


// =================================================================================================================
// =================================================== Ver DIV =====================================================
// =================================================================================================================

function ver_div( id ) {
    
    var div = document.getElementById(id);	
    if (div.style.display == "none") {
        div.style.display = "block";
    }        
    return true;
}


// =================================================================================================================
// ================================================= Ocultar DIV ===================================================
// =================================================================================================================

function ocultar_div( id ) {
    
    var div = document.getElementById(id);	
    if (div.style.display == "block") {
        div.style.display = "none";
    }        
    return true;
}
        

// =================================================================================================================
// ================================ Marca todos los checkbox pertenecientes a un grupo =============================
// =================================================================================================================

function checkAll(checkbox, theCommonNodeName) {
	theCommonNodeName = theCommonNodeName.toLowerCase();
	var theCommonNode = checkbox.parentNode;
	while(theCommonNode.nodeName.toLowerCase() != theCommonNodeName && theCommonNode != document) {
		theCommonNode = theCommonNode.parentNode;
	}

	if(theCommonNode.nodeName.toLowerCase() != theCommonNodeName) {
		alert("Common parent node could not be found");
		return;
	}

	var inputs = theCommonNode.getElementsByTagName("input");
	for(var i=0; inputs[i]; i++) {
		if(inputs[i].type == "checkbox") {
			inputs[i].checked = checkbox.checked;
		}
	}
}


// =================================================================================================================
// ========================== Convierte las cantidades en formato 1.000,23 ---> 1000.23 ============================
// =================================================================================================================

function number_formatjs(valor) {
	var aux = valor.split(",");
	if ( aux.length == 0  ){
		return 0;
	}

	for ( i = 0; i < aux.length; i++ ) {		
		// Valores Enteros
		if ( i == 0 ) {
			var auxi = aux[i].split(".");
			var acum = '';
			for ( j = 0; j < auxi.length; j++ ) {
				acum+= auxi[j];
			}
			
			if ( Number(acum) <= 0 ) {
				acum = 0;
			}
		}
		
		// Valores Decimales
		if ( i == 1 ) {
			acum = acum + "." + aux[i];
		}
		
	}
	return parseFloat(acum);
}


// =================================================================================================================
// ========================== Convierte las cantidades en formato 1000.23 ---> 1.000,23 ============================
// =================================================================================================================

function number_formatjs_esp(valor) {
	var aux 	= valor.split(".");	// se separan los enteros de los decimales
	var acum	= "";
	var j 		= aux[0].length;	
	
	// Ciclo que coloca . a los miles de la parte entera
	for ( i = 0; i < aux[0].length; i++ ) {	
		if ( j % 3 == 0 && aux[0].length != 3 ) {			
			acum += ".";
		}
		
		acum += aux[0].charAt(i);
		j--;
	}
	
	// Si no hay decimales se colocan dos ceros por defecto
	if ( !aux[1] ) {
		aux[1] = "00";
	} else {
		aux[1] = aux[1].substring(0,2);
	}
	
	// Si el primer caracter queda como . se le quita
	if ( acum.charAt(0) == "." ) {
		acum = acum.substring(1);
	}
		
	return acum+","+aux[1];
}